<?php
/*
	### 验证码相关操作类

	### 使用示例：
		require_once "Class/Plugin/VCode.class.php";
		//生成验证码图片
			Code\VCode::GetCode();

		//检测验证码
			$res = Code\VCode::Check_Code($_REQUEST['code']);
			dump($res);


*/
namespace Code;

class VCode{
	/*
		### 生成验证码
		示例：
			VCode::GetCode();
	*/
	public static function GetCode(){
		if(!isset($_SESSION)){
			session_start();
		}
		if(@$_SESSION['code_time'] && intval($_SESSION['code_time'])+1 > time()){
			exit;
		}
		$_SESSION['code_time'] = time();
		header("content-type:image/jpeg");
		$img_width = 200;	//图片宽度
		$img_height = 50;  //图片高度
		$img=imagecreatetruecolor($img_width,$img_height);
		$bgcolor=imagecolorallocate($img,rand(125,255),rand(125,255),rand(125,255));
		imagefill($img,0,0,$bgcolor);
		//画杂点
		for($i=1;$i<500;$i++){
			$colord=imagecolorallocate($img,rand(0,125),rand(0,125),rand(0,125));
			$x=rand(5,$img_width);
			$y=rand(5,$img_height);
			imagesetpixel($img,$x,$y,$colord);
		}
		//画杂线
		for($i=1;$i<10;$i++){
			$colord=imagecolorallocate($img,rand(0,125),rand(0,125),rand(0,125));
			$x=rand(0,$img_width);	//起点的X轴
			$y=rand(0,$img_height); //起点的Y轴
			$x2=rand(0,$img_width);	//起点的X轴
			$y2=rand(0,$img_height); //起点的Y轴
			imageline($img,$x,$y,$x2,$y2,$colord);		//画一条线
		}
		$str='ABCDEFGHJKMNPQRSTWXYZ23456789';
		$sess_str = '';
		for($j=1;$j<=4;$j++){
			$colort=imagecolorallocate($img,rand(1,125),rand(1,125),rand(1,125));
			$size=rand($img_height*0.6,$img_height*0.8);	//文字大小
			$text=$str[rand(0,strlen($str)-1)];
			$sess_str .= $text;
			$info=imagettfbbox($size,0,'../Public/ahronbd.ttf',$text);
			$x=($img_width/6)*$j;
			$y=rand($size,$img_height);
			imagettftext($img,$size,0,$x,$y,$colort,'../Public/ahronbd.ttf',$text);
		}
		$_SESSION['VCode_code'] = strtolower($sess_str);	//将验证码字串存放到session
		imagejpeg($img);
		imagedestroy($img);
		return strtolower($sess_str);
	}



	/*
		### 检测验证码
		$code (string) 	要检测的验证码
		return 		成功返回true,失败返回false
		示例：
	*/
	public static function Check_Code($code){
		if(!$code || strtolower($code) != @$_SESSION['VCode_code']){
			$_SESSION['VCode_code'] = md5(rand());
			return false;
		}else{
			$_SESSION['VCode_code'] = md5(rand());
			return true;
		}
	}



}